package com.zgs.mall.product;

import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;


/**
 * 商品-spu-sku
 * mybatis-plus逻辑删除
 * 配置全局的逻辑删除规则，高版本省略
 * 配置逻辑删除的组件Bean  高版本省略
 * 加上逻辑删除注解 @TableLogic(value = " 1",delva l ="0") 在Bean的字段上加
 *3.JSP303  javax.validation.constraints 这个类下
 *  給Bean添加校验注解
 *  开启校验 在方法参数上加上 @Valid 标记校验
 *  在校验的方法Bean 后上 加上 参数 BindingResult result 校验的信息全在这个类上
 *  分组校验:
 *      	@NotEmpty(message = "不能为空",groups = {UpdateGroup.class,AddGroup.class}) 空接口 UpdateGroup
 *          	groups:给校验标签标注什么情况需要进行校验
 *          1 在方法参数上 使用 这个 @Validated  开启校验，默认没有指定分组校验注解 @NotEmpty，在分组情况下不生效
 *  自定义校验
 *   编写一个自定义的校验注解
 *   编写自定义的校验器
 *  统一的异常处理：
 * @ControllerAdvice
 * 整合springCache简化缓存开发
 * 引入依赖
 * spring-boot-starter-cache
 * 写配置
 * CacheAutoConfiguration:导入RedisAutoConfiguration
 *
 */
@EnableRedisHttpSession
@SpringBootApplication
@MapperScan("com.zgs.mall.product.dao")
//nacos服务注册发现
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.zgs.mall.product.feign")
public class MallProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(MallProductApplication.class, args);
    }
}
